命名實體辨別(Named Entity Recognition, NER)也是 NLP 中很重要的任務,它的目的是從句子中提取出關鍵的資訊。
我們昨天提到的詞性標註 ( POS ) 主要識別的是每一個單詞的詞性,如名詞、動詞、形容詞等,相比之下,NER 更關注在語意層次的標註,也就是文本中重要的實體。
這邊的實體指的是像人名、地點和時間等基礎資訊,或是更具體一點的公司名稱、藥品名稱之類的。
我們來舉個例子:
假設某一家公司想要提供產品查詢的服務,當使用者想要找 ”IKEA 的白色書櫃”,那麼 NER 的概念就像是從句子中提取出了以下資訊:
這樣一來,電腦就可以快速了解使用者的意圖,然後結合資料庫搜尋找出對應的產品。
不過想要達到上面這樣的 NER 結果,需要對模型進行訓練。就和 POS 一樣,以前也會使用基於規則(rule-based)的方法去識別出實體,之後才有了使用機器學習或深度學習的方式去訓練出更精準的 NER 模型。
NER 對於閱讀理解、問答系統以及關鍵資訊提取等技術非常有幫助,而我們也可以將其實際應用在金融、醫學、法律等需要對大量文本標註實體的任務上。
在了解 NER 之後,現在讓我們利用 Spacy 提供的工具來做一個小練習吧:
import spacy
from spacy import displacy
nlp = spacy.load('en_core_web_sm')
sentence = "Mark won $200 at a casino in Las Vegas yesterday."
doc = nlp(sentence)
displacy.render(doc, style = 'ent', jupyter = True)
在 Spacy 預設的工具中,我們可以標註出人名、金額、地點、時間等實體,這樣一來就可以更快速的掌握這個句子包含的關鍵資訊,進而完成其他任務。
此外,如果我們想要查看這些被標註的實體代表什麼意思的話,也可以執行這段程式碼:
for ent in ['PERSON', 'MONEY', 'GPE', 'DATE']:
print(spacy.explain(ent))
People, including fictional
Monetary values, including unit
Countries, cities, states
Absolute or relative dates or periods
今天就先介紹到這邊吧,明天就可以來解析句子的結構了!
推薦文章
Named entity recognition (NER) in natural language processing